import json
from PIL import Image, ImageDraw, ImageFont

# import qrcode
import os
import config

#-------- 只需要配置这里 - 开始--------------------
# 自定义标题，方便打印后分类
title= config.title #"用餐"
# 自定义标识，匹配json文件：json/export_logs_{tag}.json
tag =  config.tag #"audio"
# 导出日志可能存在多种类型，你可以设置只处理某一类
webhook_list =  config.webhook_list #['audio_create','video_create'] # 支持处理的类型： ['news_create','album_create','audio_create','video_create']
#-------- 只需要配置这里 - 结束--------------------


json_file= f"json/export_logs_{tag}.json"
# 下载图片目录
down_icons = f'images/icons/{tag}'
# 生成图片目录 
tiezhi_images = f'images/tiezhi/{tag}'
# 生成小程序码 图片目录 
qr_images = f'images/qrcode/{tag}'


# 45格图片保存
output_45grid = f'images/45grid/{tag}'
# 创建保存目录（可选）
os.makedirs(output_45grid, exist_ok=True)


 






# 加载JSON数据
with open(json_file, "r", encoding="utf-8") as file:
    data_list = json.load(file)

# 打开背景图片
# background = Image.open("45grid-bg.png").convert("RGBA")
# 创建一个RGB图像，背景为白色
background = Image.new("RGBA", (2480, 3508), "#ffffff")

font_title = ImageFont.truetype("font/Alibaba-PuHuiTi-Regular.ttf", 24)
# 添加文字
draw = ImageDraw.Draw(background)
draw.text((70, 25), title, font=font_title, fill=(255, 0, 0))



# 为每个条目生成图片
for index, data in enumerate(data_list):
   
    if data['logs']['type'] !='json':
        continue
    if data['status'] !=1:
        continue
    
    # webhook: 
    if data['webhook'] not in webhook_list:
        continue
   
  
    # 处理 json数据
    data_log = json.loads(data['logs']['log'])
      # 会将每个单词的首字母都转为大写
    data_log['title'] = data_log['title'].title()
    
    # 生成贴纸图片
    filename = f"{tiezhi_images}/{data_log['title'].replace(' ', '_')}.png"

    if not os.path.exists(filename):
        print(f"图片不存在，请先执行 python logs2img.py: {filename}")
        continue

    # 图片
    img_card = Image.open(filename).convert("RGBA")

    # 边距
    padding = 70
    # 合并背景图片和 二维码
    # x |45| x
    # ---29---
    # x |45| x

    col = index % 5  # 第几列
    row = index // 5  # 第几行 表示 a 除以 b，然后向下取整
    x = padding + col * (428 + 45)  # 间隔 45
    y = padding + row * (349 + 29)  # 间隔 29
    # print(f"Generated: {x}: {y}")

    # 粘贴小图到背景图上
    background.paste(img_card, (x, y), img_card)


filename = f"{output_45grid}/{tag}.png"
# 保存结果
background.save(filename)
print(f"已完成，结果已保存至 {filename}")
